#ifndef __QUEUE_H
#define __QUEUE_H
#ifdef __cplusplus
extern "C"{
#endif
/* Includes ------------------------------------------------------------------*/
//头文件
/*标准头文件*/
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
/*用户头文件*/
/*思路：
 *1、使用单向链表存储结构存储队列数据
 *2、先进先出，队首指针：*front，队尾指针：*rear，进队（入队）rear指针后移，出队（离队）front指针右移动
 *3、 单向链表末尾插入（队列入队），单向链表头部删除（队列出队）*/
/* Private types -------------------------------------------------------------*/


/*1、基于单向链表的队列
 *2、初始化队列
 *3、获取队列元素个数
 *4、元素入队列
 *5、元素出队列
 *6、释放队列内存
 *7、遍历队列*/
//私有结构体、枚举、共用体等
typedef struct queue
{
	int data;
	struct queue *next;
}Queue;

typedef struct
{
	Queue *head;
	size_t length;
}LinkedQueue;

/*初始化队列*/
void initQueue(LinkedQueue *queue);
/*返回队列内元素个数*/
size_t getSize(const LinkedQueue *queue);
/*添加新元素*/
void enqueue(LinkedQueue *queue, int element);
/*元素出队列*/
int dequeue(LinkedQueue *queue);
/*释放队列内存*/
void destroyQueue(LinkedQueue *queue);
/*遍历队列*/
void printQueue(LinkedQueue *queue);

#ifdef __cplusplus
}
#endif
#endif